$Description$
给出$n$个形如$[l,r]$的线段。$m$次询问,每次询问区间$[x,y],$问至少选出几条线段,使得区间$[x,y]$的任何一个部位都被至少一条线段覆盖。
$Solution$
考虑贪心,首先设询问区间为$[x,y],$你选的所有$[l,r]$中最左边的一个$l$必然$\leqslant x($有且仅有一个$),$所以对于这个区间,它对答案的贡献取决于它的$r,$所以我们希望它在满足$l\leqslant x$的情况下$~r$更大,那么取完第一个这个问题就变成了一个$[r+1,y]$的子问题了,直到选取的$r\geqslant y$为止。
但是这个复杂度是$O(nm),$考虑倍增,每次向右跳$2^i$条线段,那么复杂度就变成$O(n~log~m)$了。
$Code$
1 |
|